﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic;
using System.IO;
using System.Data;

namespace Crosland.Automotriz.Web.SSIS
{
    public partial class wFrmCargaContabilidadSap : System.Web.UI.Page
    {

        EjecutarJobsLogic jobExec = new EjecutarJobsLogic();
        FormatingTXTContabilidad txtConta = new FormatingTXTContabilidad();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
             
            }

            //this.uploadTxt.Popup += new EventHandler(Ocultar_Popup);

           

            TablaExcel_Cargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            if (dt.Rows.Count == 0)
            {
                btnProcesar.Enabled = false;
                btnPreparar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".txt"))
            {
                btnPreparar.Enabled = true;
                btnProcesar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".xlsx"))
            {
                btnPreparar.Enabled = false;
                btnProcesar.Enabled = true;
            }

            

        }

        //protected void Ocultar_Popup(object sender, EventArgs e)
        //{
        //    popupImportarTXT.ShowOnPageLoad = false;
        //}


    
   
        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Session["ArchivosExcel"] = null;
            Response.Redirect("http://automotriz.crosland.com.pe/Seguridad/wFrmDefault.aspx");
        }

        protected void Uploader1_FileUploaded(object sender, CuteWebUI.UploaderEventArgs args)
        {
            
            try
            {
                string UploadDirectory = Server.MapPath("~/Archivos Excel SSIS/FBL3N Contabilidad");
                string Nombre = args.FileName;
                byte[] bytes = Tools.ReadToEnd(args.OpenStream());

                File.WriteAllBytes(UploadDirectory + args.FileName, bytes);

               // popupImportar.ShowOnPageLoad = false;
                string scriptOK = "MostrarMensaje();";
                lblMensaje.Text = "Excel cargado.";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }
            catch (Exception ex)
            {
                //popupImportar.ShowOnPageLoad = false;
                string scriptOK = "MostrarMensaje();";
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }

        }


        //protected void UploaderExcel()
        //{

        //    try
        //    {

        //    }
        //    catch (Exception)
        //    {
        //        popupImportar.ShowOnPageLoad = false;
        //        string scriptOK = "MostrarMensaje();";
        //        lblMensaje.Text = ex.Message;
        //        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
        //    }

        //}
        protected void TablaExcel_Cargados()
        {
            DataTable dt = new DataTable();

            if (Session["ArchivosExcel"] == null)
            {
                dt.PrimaryKey = new DataColumn[] { dt.Columns.Add("ID", typeof(string)) };
                dt.Columns.Add("NombreArchivo", System.Type.GetType("System.String"));

                Session["ArchivosExcel"] = dt;

            }
            else
            {
                dt = (DataTable)Session["ArchivosExcel"];

            }

        }

        protected void dgvExcelCargados_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];

            int id = Convert.ToInt32(e.Keys["ID"]);

            DataRow[] Fila = dt.Select("ID='" + id.ToString() + "'");

            string NombreArchivo = Fila[0]["NombreArchivo"].ToString();

            if (File.Exists(Server.MapPath("~/Archivos Excel SSIS/" + NombreArchivo)))
            {

                File.Delete(Server.MapPath("~/Archivos Excel SSIS/" + NombreArchivo));

            }

            DataRow row = (dt.Rows.Find(e.Keys["ID"]));
            dt.Rows.Remove(row);
            e.Cancel = true;

            ReenumerarItem(dt);

            Session["ArchivosExcel"] = dt;

            if (dt.Rows.Count == 0)
            {
                btnProcesar.Enabled = false;
                btnPreparar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".txt"))
            {

                btnPreparar.Enabled = true;
                btnProcesar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".xlsx"))
            {

                btnPreparar.Enabled = false;
                btnProcesar.Enabled = true;
            }

            this.dgvExcelCargados.DataSource = dt;
            this.dgvExcelCargados.DataBind();
        }

        protected void ReenumerarItem(DataTable d)
        {

            for (int x = 0; x <= d.Rows.Count - 1; x++)
            {
                d.Rows[x].BeginEdit();
                d.Rows[x][0] = x + 1;
                d.Rows[x].EndEdit();
            }

        }

        protected void btnProcesar_Click(object sender, EventArgs e)
        {
            string job = "Cargar_Contabilidad_Excel_SAP";
            string status = jobExec.StartSqlJob(job);
            lblStatus.Text = status;

            rpExcelCargados.Enabled = false;

            btnImportar.Enabled = false;
            btnImportarTxt.Enabled = false;
            btnProcesar.Enabled = false;
            btnPreparar.Enabled = false;
            Image1.Visible = true;
            lblStatus.Visible = true;
            Timer1.Enabled = true;
        }

        protected void Timer1_Tick(object sender, EventArgs e)
        {
            int id;
            string msg = string.Empty;

            id = jobExec.StatusJob("Cargar_Contabilidad_Excel_SAP");
            msg = jobExec.MsgStatusJob(id);

            lblStatus.Text = msg;

            if (id != 1)
            {
                rpExcelCargados.Enabled = true;
                MostrarExcelCargados();
                btnImportar.Enabled = true;
                btnImportarTxt.Enabled = true;
                btnProcesar.Enabled = false;
                btnPreparar.Enabled = false;
                Image1.Visible = false;
                lblStatus.Text = msg;
                Timer1.Enabled = false;
            }

        }


        protected void MostrarExcelCargados()
        {
            TablaExcel_Cargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            DataRow dr;

            if (dt.Rows.Count > 0)
            {
                for (int x = 0; x <= dt.Rows.Count-1; x++)
                {
                   dt.Rows.RemoveAt(x);
                }
            }

            DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/Archivos Excel SSIS"));

            FileInfo[] files = dir.GetFiles("*.xlsx", SearchOption.AllDirectories);
            foreach (var fileInfo in files)
            {
                dr = dt.NewRow();
                dr.BeginEdit();
                dr["ID"] = dt.Rows.Count + 1;
                dr["NombreArchivo"] = fileInfo.Name;
                dr.EndEdit();
                dt.Rows.Add(dr);
            }

            Session["ArchivosExcel"] = dt;

            dgvExcelCargados.DataSource = dt;
            dgvExcelCargados.DataBind();

            //btnProcesar.Enabled = true;


        }

        protected void MostrarArchivoTextoCargados()
        {
            TablaExcel_Cargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            DataRow dr;

            if (dt.Rows.Count > 0)
            {
                for (int x = 0; x <= dt.Rows.Count-1; x++)
                {
                    dt.Rows.RemoveAt(x);
                }
            }

            DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/Archivos Excel SSIS"));

            FileInfo[] files = dir.GetFiles("*.txt", SearchOption.AllDirectories);
            
            foreach (var fileInfo in files)
            {
                dr = dt.NewRow();
                dr.BeginEdit();
                dr["ID"] = dt.Rows.Count + 1;
                dr["NombreArchivo"] = fileInfo.Name;
                dr.EndEdit();
                dt.Rows.Add(dr);
            }

            Session["ArchivosExcel"] = dt;

            dgvExcelCargados.DataSource = dt;
            dgvExcelCargados.DataBind();

       

        }

        protected void ASPxButton2_Click(object sender, EventArgs e)
        {
            MostrarExcelCargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            if (dt.Rows.Count == 0)
            {
                btnProcesar.Enabled = false;
                btnPreparar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".txt"))
            {
                
                btnPreparar.Enabled = true;
                btnProcesar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".xls"))
            {
                
                btnPreparar.Enabled = false;
                btnProcesar.Enabled = true;
            }
        }

        protected void btnPreparar_Click(object sender, EventArgs e)
        {
            Image1.Visible = true;
            lblStatus.Visible = true;
            lblStatus.Text = "Dando formato al archivo...!!!";

            txtConta.FormatoContabilidadTXT();

            string job = "Cargar_Contabilidad_Txt_SAP";
            string status = jobExec.StartSqlJob(job);

            lblStatus.Text = status;
            rpExcelCargados.Enabled = false;

            btnImportar.Enabled = false;
            btnImportarTxt.Enabled = false;
            btnProcesar.Enabled = false;
            btnPreparar.Enabled = false;
            Timer2.Enabled = true;
                     

        }


        protected void Timer2_Tick(object sender, EventArgs e)
        {
            int id;
            string msg = string.Empty;

            id = jobExec.StatusJob("Cargar_Contabilidad_Txt_SAP");
            msg = jobExec.MsgStatusJob(id);

            lblStatus.Text = msg;

            if (id != 1)
            {
                rpExcelCargados.Enabled = true;
                MostrarArchivoTextoCargados();
                btnImportar.Enabled = true;
                btnImportarTxt.Enabled = true;
                btnProcesar.Enabled = false;
                btnPreparar.Enabled = false;
                Image1.Visible = false;
                lblStatus.Text = msg;
                Timer2.Enabled = false;
            }

            
        }

        protected void btnMensaje2_Click(object sender, EventArgs e)
        {
            MostrarArchivoTextoCargados();
          //  MostrarExcelCargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];

            if (dt.Rows.Count == 0)
            {
                btnProcesar.Enabled = false;
                btnPreparar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".txt"))
            {

                btnPreparar.Enabled = true;
                btnProcesar.Enabled = false;
            }
            else if (dt.Rows[0][1].ToString().ToLower().Contains(".xlsx"))
            {

                btnPreparar.Enabled = false;
                btnProcesar.Enabled = true;
            }

        }

        protected void Timer3_Tick(object sender, EventArgs e)
        {
            Image1.Visible = true;
            lblStatus.Visible = true;
            lblStatus.Text = "Dando formato al archivo...!!!";
        }

   

        protected void btnDetalle_Click(object sender, EventArgs e)
        {

            Boolean popupText=popupImportarTXT.ShowOnPageLoad;
            Boolean popupExcel = popupImportar.ShowOnPageLoad;

            popupImportarTXT.ShowOnPageLoad = false;
            popupImportar.ShowOnPageLoad = false;


            if (popupText)
            {
                string scriptOK = "MostrarMensaje2();";
                lblMensaje2.Text = "Archivo cargado.";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);

            }
            else {

                lblMensaje.Text = "Se cargó correctamente";
                string scriptOK = "MostrarMensaje();";
                lblMensaje2.Text = "Archivo cargado.";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }



            
        }


     

        protected void UploadControl_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            string resultFilePath ="/Archivos Excel SSIS/FBL3N_ORIG_" + e.UploadedFile.FileName;
            e.UploadedFile.SaveAs(MapPath(resultFilePath));
        }

        protected void ASPxUploadControl2_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            string resultFilePath = "/Archivos Excel SSIS/FBL3N_ORIG_" + e.UploadedFile.FileName;
            e.UploadedFile.SaveAs(MapPath(resultFilePath));
        }

        protected void btnImportarTxt_Click(object sender, EventArgs e)
        {

        }

    }
}